# src/utils/logger.py
import logging
from logging.handlers import RotatingFileHandler
import os

def get_logger(name: str = __name__) -> logging.Logger:
    """获取配置好的日志对象"""
    # 创建日志目录（如不存在）
    log_dir = "logs"
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)
    
    # 日志文件名
    log_file = os.path.join(log_dir, "art_trade.log")
    
    # 初始化日志器
    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)  # 全局日志级别
    
    # 避免重复添加处理器
    if not logger.handlers:
        # 控制台处理器（输出到终端）
        console_handler = logging.StreamHandler()
        console_handler.setLevel(logging.INFO)
        
        # 文件处理器（按大小切割，保留历史日志）
        file_handler = RotatingFileHandler(
            log_file, maxBytes=10*1024*1024,  # 10MB切割
            backupCount=5, encoding="utf-8"   # 保留5个备份
        )
        file_handler.setLevel(logging.INFO)
        
        # 日志格式
        formatter = logging.Formatter(
            "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
        )
        console_handler.setFormatter(formatter)
        file_handler.setFormatter(formatter)
        
        # 添加处理器到日志器
        logger.addHandler(console_handler)
        logger.addHandler(file_handler)
    
    return logger